// 下面表达式的值是什么（腾讯）？
0 == '';
0 == '0';
2 == true;
2 == false;
false == 'false'; //   0  == NaN
false == '0'; //  0 == 0
false == undefined;
false == null;
null == undefined;
' \t\r\n ' == 0;


/**
 * 
 == 的隐式类型转换
 1. 两边如果存在null或者undefined，他们只和对方以及自身相等，和其他的都不等
 2. 如果等式两边有布尔类型，要将布尔类型转化成数字
 3. 如果等式两边有数字，就要将不是数字的那边转化成数字
 4. 如果等式两边有对象存在，就要调用对象的ToPrimitive方法，转换为原始类型，
 原理是先调用valueof转换为原始类型，但是如果不是原始类型，就调用toString方法
 
 
  
 转数字   null  ==>  0  , undefined==>  NaN ,  true ==>  1 ,  false==>  0,    '' ==> 0 ,   "        " ==>  0
 
 加法运算操作符  
  1如果有一侧为String类型，则将另一侧转换为字符串，最后连接起来
  2如果有一侧是Number类型,另一侧是原始类型,则将元素类型转换成Number类型
  3如果有一侧是Number类型,另一侧为引用类型，将引用类型和Number类型转换成字符串后拼接
  4如果两边不是string跟Number那么 直接转 数字 运算  
 */